package com.localking.algorithm.leetcode.array.string

/**
 * Given an input string, reverse the string word by word.
 *
 * Example1:
 * Input: "the sky is blue"
 * Output: "blue is sky the"
 *
 * Example2:
 * Input: " hello world! "
 * Output: "world! hello"
 *
 * Example3:
 * Input: "a good example"
 * Output: "example good a"
 * Explanation: you need to reduce multiple spaces between two words to a single space in the reversed string.
 *
 * Note:
 * * A word is defined as a sequence of non-space characters.
 * * Input string may contain leading or trailing spaces. However, you reversed string should not contain leading or trailing spaces.
 * * You need to reduce multiple spaces between two words to a single space in the reversed string.
 *
 * Follow up:
 * For C programmers, try to solve it in-place in O(1) extra space.
 *
 * @author jinbo
 */
object ReverseWords {
  def main(args: Array[String]): Unit = {
    println(reverseWords(" hello world! "))
  }

  def reverseWords(s: String): String = {
    val strArray: Array[String] = s.trim().split("\\s+")
    strArray.reverse.mkString(" ")
  }
}
